/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._1207;

import java.util.Arrays;
import java.util.HashSet;

/**
 *
 * 给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
 *
 * 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：arr = [1,2,2,1,1,3]
 * 输出：true
 * 解释：在该数组中，1 出现了 3 次，2 出现了 2 次，3 只出现了 1 次。没有两个数的出现次数相同。
 * 示例 2：
 *
 * 输入：arr = [1,2]
 * 输出：false
 * 示例 3：
 *
 * 输入：arr = [-3,0,1,-3,1,1,1,-3,10,0]
 * 输出：true
 *  
 *
 * 提示：
 *
 * 1 <= arr.length <= 1000
 * -1000 <= arr[i] <= 1000
 *
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._1207
 * @ClassName: UniqueNumber
 * @Author: linyaonan
 * @Date: 2020/1/7 17:57
 */
public class UniqueNumber {
    public boolean uniqueOccurrences(int[] arr) {
        Arrays.sort(arr);
        HashSet<Integer> countSet = new HashSet<>();
        int start = arr[0];
        int saveCount = 1;
        for (int i = 1; i < arr.length; i++) {
            if (start == arr[i]) {
                saveCount++;
            } else {
                if (countSet.contains(saveCount)) {
                    return false;
                } else {
                    countSet.add(saveCount);
                }
                start = arr[i];
                saveCount = 1;
            }
        }
        return !countSet.contains(saveCount);
    }
}
